// ! mongodb
// * 使用 typeorm 连接数据库,进行创建实体
import { Entity, Column, PrimaryColumn, CreateDateColumn, ObjectIdColumn, ObjectId, UpdateDateColumn } from "typeorm";
import { v4 as uuidv4 } from "uuid";

@Entity()
// 这里连接的 mongodb devices就是数据库集合名称(mongoose 中 单数会变成复数 但是 typeorm 不会)
export class Devices {
  // * 解决报错 typeorm 不会为了 mongodb 创建 ObjectId 不然调用 save 会报错 MongoDB 中的每个实体都必须具有 ObjectID 列
  // Cannot read property 'createValueMap' of undefined
  @ObjectIdColumn()
  _id: ObjectId;
  // * 每个实体必须至少有一个主键列
  // @PrimaryGeneratedColumn("uuid") // 如果要自定义 uuid 版本 则如下
  // ! 艹 这个默认值 加不上 服了
  // @PrimaryColumn({ default: () => uuidv4() }) // 这样设置默认值不行 不知道为啥
  @PrimaryColumn()
  id: string = uuidv4(); // 必须这样设置默认值 而且必须先调用 create 再调用 save

  @Column()
  name: string;

  @Column()
  serialNumber: string;

  @Column()
  unit: string;

  @Column()
  changeFields?: string[];

  @CreateDateColumn() // 特殊列，自动为实体插入日期 创建时间
  createTime: Date;

  @UpdateDateColumn()  // 特殊列，自动为实体插入日期 更新时间
  updateTime: Date; // 好像需要手动更新
  // @DeleteDateColumn()  // 特殊列，自动为实体插入日期 删除时间
}
